package it.orma.iridehr.entities;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = "TITOLI_DI_STUDIO")
public class TitoloDiStudio extends EntitaBase implements Serializable {

	private static final long serialVersionUID = -6062575305721448911L;
	
	@Id
	@Column(name = "ID_TITOLO_STUDIO")
	@GeneratedValue(strategy=GenerationType.AUTO)
	private Long idTitoloDiStudio;
	
	@Column(name = "TP_LIVELLO_TITOLO_STUDIO")
	private Integer livelloTitoloDiStudio;
	
	@Column(name = "TP_TITOLO_DI_STUDIO", length=100)
	private String tipologiaTitoloDiStudio;
	
	@Column(name = "DS_ISTITUTO", nullable = true, length = 200)
	private String istituto;
	
	@Column(name = "DS_ANNO", nullable = true)
	private Integer anno;
	
	@Column(name = "DS_VOTAZIONE", nullable = true, length = 10)
	private String votazione;
	
	@Column(name = "DS_TITOLO_TESI", nullable = true, length= 200)
	private String titoloTesi;
	
	@ManyToOne
	@JoinColumn(name = "FK_STUDI_COMPIUTI")
	private StudiCompiuti studiCompiuti;

	public TitoloDiStudio() {
		super();
	}

	public Long getIdTitoloDiStudio() {
		return idTitoloDiStudio;
	}

	public void setIdTitoloDiStudio(Long idTitoloDiStudio) {
		this.idTitoloDiStudio = idTitoloDiStudio;
	}

	public Integer getLivelloTitoloDiStudio() {
		return livelloTitoloDiStudio;
	}

	public void setLivelloTitoloDiStudio(Integer livelloTitoloDiStudio) {
		this.livelloTitoloDiStudio = livelloTitoloDiStudio;
	}

	public String getTipologiaTitoloDiStudio() {
		return tipologiaTitoloDiStudio;
	}

	public void setTipologiaTitoloDiStudio(String tipologiaTitoloDiStudio) {
		this.tipologiaTitoloDiStudio = tipologiaTitoloDiStudio;
	}

	public String getIstituto() {
		return istituto;
	}

	public void setIstituto(String istituto) {
		this.istituto = istituto;
	}

	public Integer getAnno() {
		return anno;
	}

	public void setAnno(Integer anno) {
		this.anno = anno;
	}

	public String getVotazione() {
		return votazione;
	}

	public void setVotazione(String votazione) {
		this.votazione = votazione;
	}

	public String getTitoloTesi() {
		return titoloTesi;
	}

	public void setTitoloTesi(String titoloTesi) {
		this.titoloTesi = titoloTesi;
	}

	public StudiCompiuti getStudiCompiuti() {
		return studiCompiuti;
	}

	public void setStudiCompiuti(StudiCompiuti studiCompiuti) {
		this.studiCompiuti = studiCompiuti;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime
				* result
				+ ((idTitoloDiStudio == null) ? 0 : idTitoloDiStudio.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		TitoloDiStudio other = (TitoloDiStudio) obj;
		if (idTitoloDiStudio == null) {
			if (other.idTitoloDiStudio != null)
				return false;
		} else if (!idTitoloDiStudio.equals(other.idTitoloDiStudio))
			return false;
		return true;
	}
	
	
}
